// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
// 引入axios阿贾克斯库
import axios from 'axios'
// 把axios绑定到vue的原型
Vue.prototype.$axios = axios;
//引入vant-ui组件库
import Vant from 'vant';
// 引入提示框
import { Toast } from 'vant';
// Vue.use(Toast);
// 路由导航守卫,在跳转路由之前处理
router.beforeEach((to,from,next)=>{
  // 获取本地存储的token值
  var token = localStorage.getItem('token')
  const pagesNeedAuth = ['/profile','/editprofile']
  // 判断是不是跳转到/profile
  if(pagesNeedAuth.indexOf(to.path) >= 0){
    // 判断有token的话执行下一步跳转，否则跳转到登录页面
    if(token){
      next();
    }else{
      router.push('/login')
    }
     // 这里是去其他页面的逻辑
  }else{
    next();
  }
})
// 设置发送阿贾克斯默认地址
axios.defaults.baseURL = 'http://liangwei.tech:3000';
// 封装一个图片路径的公共方法
Vue.prototype.$fixImgUrl = function(url){
  var img = ''
  if(url.indexOf('http') < 0){
    img = axios.defaults.baseURL + url
  }else{
    img = url
  }
  return img
}
// 添加请求拦截器
axios.interceptors.request.use(config=> {
  // 在发送请求之前做些什么
  // console.log(config)
  if(!config.headers.Authorization && localStorage.getItem('token')){
    config.headers.Authorization = localStorage.getItem('token')
  }
   // 有拦截就要有返回
  return config;
});
// axios 拦截器 响应拦截器
axios.interceptors.response.use(res=>{
  // 获取响应数据里面的message,statusCode值
 const {message,statusCode} = res.data
//  处理登录失败操作
 if(message && statusCode == 401){
    Toast.fail(message);
 }
//  判断注册失败操作
 if(message && statusCode == 400){
  Toast.fail(message);
 }
//  判断用户信息验证失败后跳转到登录页面
 if(message == '用户信息验证失败'){
   router.push({
     path: '/login'
   })
 }
  return res;
})
//注册组件库
Vue.use(Vant);
//引入组件样式文件
import 'vant/lib/index.css';

Vue.config.productionTip = false

/* eslint-disable no-new */
// 创建vue实列
new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>'

})
